void Average (ImSize, WinSize, InIm, OutIm)
int  ImSize, WinSize;
BYTE ** InIm;
BYTE ** OutIm;
{
   int   r,c, y,x, n, Area;
   long  Sum;

   n = (WinSize-1) >> 1;
   Area = (2*n+1) * (2*n+1);

   for (r=0; r<ImSize; r++)
      for (c=0; c<ImSize; c++)  OutIm [r][c] = 0;

   for (r=n; r<ImSize-n; r++) {
      for (c=n; c<ImSize-n; c++) {
         Sum = 0;
         for (y=-n; y<=n; y++)
            for (x=-n; x<=n; x++)
               Sum += InIm [r+y] [c+x];
         OutIm [r][c] = (BYTE) (Sum/Area);
}  }  }
